// ById
function D(id) {
	return document.getElementById(id);
}

// 软件初始化状态
var is_IM_init = false;
// 登录微信号
var robot_name = '';
// 快捷回复类型
var quick_type = "personal";
// 联系人昵称
var contact_item_usernick = null;
// 联系人微信id
var contact_item_wxid = null;
// 最近联系人列表
var recent_contacts_list = [];
// 消息记录
var global_record_data = [];
// 获取消息记录的最小id值
var record_min_id = null;
// 单次发送消息
var once_send = false;
// 用户详情来源
var detail_from = "avatar";
// 首次加载触底
var once_load = true;
// 默认用户头像
var default_avatar = "";
//默认机器人头像
var Robot_Avatar = "";
// 聊天区用户头像
// var contact_item_avatar = "";
var contact_item_avatar = "https://fanyi.bdstatic.com/static/translation/img/header/logo_40c4f13.svg";
// 发送消息模式
var send_type = 'enter';
// 发送消息模式
var send_type = 'enter';
// 绑定快捷键发送
var shortCut = null;

var tags_array = null;

// 表情包
var emoticons = {
	0: '微笑',
	1: '撇嘴',
	2: '色',
	3: '发呆',
	4: '得意',
	5: '流泪',
	6: '害羞',
	7: '闭嘴',
	8: '睡',
	9: '大哭',
	10: '尴尬',
	11: '发怒',
	12: '调皮',
	13: '呲牙',
	14: '惊讶',
	15: '难过',
	16: '酷',
	17: '冷汗',
	18: '抓狂',
	19: '吐',
	20: '偷笑',
	21: '愉快',
	22: '白眼',
	23: '傲慢',
	24: '饥饿',
	25: '困',
	26: '惊恐',
	27: '流汗',
	28: '憨笑',
	29: '悠闲',
	30: '奋斗',
	31: '咒骂',
	32: '疑问',
	33: '嘘',
	34: '晕',
	35: '疯了',
	36: '衰',
	37: '骷髅',
	38: '敲打',
	39: '再见',
	40: '擦汗',
	41: '抠鼻',
	42: '鼓掌',
	43: '糗大了',
	44: '坏笑',
	45: '左哼哼',
	46: '右哼哼',
	47: '哈欠',
	48: '鄙视',
	49: '委屈',
	50: '快哭',
	51: '阴险',
	52: '亲亲',
	53: '吓',
	54: '可怜',
	55: '菜刀',
	56: '西瓜',
	57: '啤酒',
	58: '篮球',
	59: '乒乓',
	60: '咖啡',
	61: '饭',
	62: '猪头',
	63: '玫瑰',
	64: '凋谢',
	65: '嘴唇',
	66: '爱心',
	67: '心碎',
	68: '蛋糕',
	69: '闪电',
	70: '炸弹',
	71: '刀',
	72: '足球',
	73: '瓢虫',
	74: '便便',
	75: '月亮',
	76: '太阳',
	77: '礼物',
	78: '拥抱',
	79: '强',
	80: '弱',
	81: '握手',
	82: '胜利',
	83: '抱拳',
	84: '勾引',
	85: '拳头',
	86: '差劲',
	87: '爱你',
	88: 'No',
	89: 'OK'
}


window.onload = function () {


	// 初始化按enter键发送
	shortCut = new ShortCut();
	console.log(shortCut)
	shortCut.init(CHAT_EDITOR.edit.doc);
	shortCut.feedback('enter', function () {
		handleClickSendMsg();
	})
	shortCut.feedback('ctrlEnter', function () {
		CHAT_EDITOR.insertHtml('<br />')
	});
}


// 初始化交互
function initAjax(msg) {
	var event = document.createEvent('MessageEvent');
	var origin = window.location.protocol + '//' + window.location.host;
	event.initMessageEvent('MessageReceived', true, true, msg, origin, 1234, window, null);
	document.dispatchEvent(event);
}

// 全局接收消息事件
function messageReceived(res) {


	res = Base64.decode(res);
	res = JSON.parse(res);

	//软件初始化
	if (res.type == "IM/Init") {
		listenIMinit(res.data);
	}
	//监听新消息
	if (res.type == "Message/New") {
		listenNewMessage(res.data);
	}
	//监听添加好友
	if (res.type == "Friend/New") {
		listenNewfriend(res.data);
	}
	//发送消息
	if (res.type == "Message/Status") {
		handleClickSendMsgCallback(res.data);
		// alert(5)
	}
	if(res.type == "ChatWindowns/New")
	{
		openNewWindowns(res.data.id,res.data.wxid,res.data.usernick,res.data.content,res.data.heardpic);
	}
	if(res.type == "Tags/Init")
	{
		tags_array = res.data;
	}
	//添加提示
	if(res.type == "Friend/Delete")
	{
		var wxid = res.data.wxid;
		$("#" + wxid).hide();
		modal.tips(res.data.message);

		var idx = -1;

		for (var i = 0; i < recent_contacts_list.length; i++) {
			var item_wxid = recent_contacts_list[i].wxid;
			if (item_wxid == wxid) {
				idx = i;
			}
		}

		if(idx != -1) recent_contacts_list.splice(idx,1);	
	}
	if(res.type == "Modal/Tips")
	{
		modal.tips(res.data.message);
	}
	if (res.code == 100) {
		var data = res.data;
		//获取最近联系人
		if (res.type == "RecentContacts/GetList") {
			getRelatedListCallback(data);
		}
		//标记消息为已读
		if (res.type == "Message/MarkRead") {
			markMsgReadCallback(res);
		}
		//获取好友分组组名
		if (res.type == "Friend/GetGroup") {
			getGroupNameCallback(data)
		}
		//获取好友分组列表
		if (res.type == "Friend/GetList") {
			getGroupListCallback(data);
		}
		//查找用户
		if (res.type == "Friend/Search") {
			searchContactsCallback(data);
		}
		//将当前联系人添加至最近联系人列表
		if (res.type == "RecentContacts/UpdateIndex") {
			addtoRelatedListCallback(res);
		}
		//获取对话聊天记录
		if (res.type == "ChatRecord/GetList") {
			getChatRecordCallback(data);
			// alert(3)
		}
		//获取快捷回复列表
		if (res.type == "QuickReply/GetList") {
			getQuickReplyCallback(data);
			// alert(2)
			// alert(JSON.stringify(data))
		}
		//获取用户详情
		if (res.type == "Friend/Get") {
			getUserInfoCallback(data);
		}
		//获取微信订单，返利
		if (res.type == "Purview/Get") {
			getPurviewCallback(data);
		}

	} else {}
}

// 监听软件初始化
function listenIMinit(data) {
	// 机器人信息从这个data中可以获取到
	// alert(JSON.stringify(data))
	//如果想把局部变量变成全局变量
	(function (win) {
		var lut = data; //局部变量
		win.lut = lut;
	})(window);
	//  外部可以访问这个局部变量了
	//   alert(JSON.stringify(lut));

	robot_name = data.robot_name;
	default_avatar = data.pic;
	Robot_Avatar = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1551950593900&di=4b8382b97f1f312717e749ceb8e5daf8&imgtype=0&src=http%3A%2F%2Fhbimg.b0.upaiyun.com%2F69ad7a731f43d4b8729f1a2fbe65c43801ca0f033250-EV1vMf_fw658";


	//初始化界面
	contact_item_wxid = null;
	D("sch-ipt").value = '';
	D("dropView").innerHTML = '';
	D("dropView").style.display = 'block';
	D("show-related").classList.add('active');
	D("show-related").nextElementSibling.classList.remove('active');
	D("contactGroup").style.display = 'none';
	D("sch-res").style.display = "none";
	D("no-res").style.display = "none";
	D("middle_chat_area").style.display = "none";
	D("right_baseinfo_area").style.display = "none";


	setTimeout(function () {
		// 软件初始化状态
		is_IM_init = true;

		//获取最近联系人列表
		getRelatedList();

		// 获取快捷回复列表
		getPersonalQuickReply();
	}, 100)
}

// 监听添加好友
function listenNewfriend(data) {
	//往联系人列表添加一条数据并置顶
	//将新联系人添加至最近联系人列表
	var newItemObj = {
		ID: 1,
		wxid: data.wxid,
		content: data.content,
		lastline: new Date().getTime(),
		usernick: data.usernick,
		heardpic: data.heardpic,
		unread: 0
	}
	recent_contacts_list.splice(0, 0, newItemObj);
	renderContactslist(recent_contacts_list);
}

// 监听新消息
function listenNewMessage(data) {

	// 新消息提醒声音
	var b = document.getElementById('audio');
	b.play();

	// document.querySelector('#ua').innerText(data.content)
	var content_id = "content" + data.wxid;
	var circle_id = "circle" + data.wxid;
	var unread_id = "unread" + data.wxid;
	var time_id = "time" + data.wxid;

	var isLocalRobot = data.from_wxid == "localhost";
	var unreadRaise = isLocalRobot ? 0 : 1;

	if (data.wxid == contact_item_wxid) {
		//为当前会话，追加至聊天记录
		var newMsg = document.createElement("div");

		
		if (data.from_wxid == "localhost") {
			newMsg.className = "chat-item clearfix self";
			var html = '';
			html += '<div class="avatar">';
			html += '<img src="' + default_avatar + '" data-wxid="' + data.wxid + '" onclick="viewUserDetail(this,0)">';
			html += '</div>';
			html += '<div class="chat-cont">';
			html += '<div class="cont">' + formatChat(data.content) + '</div>';
			html += '<div class="triangle"></div>';
			html += '</div>';
		} else {
			newMsg.className = "chat-item clearfix";
			var html = '';
			html += '<div class="avatar">';

			// if (data.heardpic) {
			//     html += '<img src="' + data.heardpic + '" data-wxid="' + data.wxid + '" onclick="viewUserDetail(this)">';
			// } else {
			//     html += '<img src="' + contact_item_avatar + '" data-wxid="' + data.wxid + '" onclick="viewUserDetail(this)">';
			// }

			html += '<img src="' + contact_item_avatar + '" data-wxid="' + data.wxid + '" onclick="viewUserDetail(this,1)">';
			html += '</div>';
			html += '<div class="chat-cont">';
			html += '<div class="cont">' + formatChat(data.content) + '</div>';
			html += '<div class="triangle"></div>';
			html += '</div>';
		}

		newMsg.innerHTML = html;
		D("chat-list").appendChild(newMsg);

		var contact_item_content = D(content_id);
		var contact_item_circle = D(circle_id);
		var contact_item_unread = D(unread_id);
		var contact_item_time = D(time_id);

		//更新显示内容
		contact_item_content.innerHTML = data.content;

		//更新消息时间
		contact_item_time.innerHTML = tool.formatDate('hh:ii', data.__t);

		//聊天记录置底
		scrollToBottom();

		//标记消息为已读
		setTimeout(function () {
			markMsgRead(data.wxid);
		}, 100)
	} else {
		//不为当前会话
		var result = false;
		var idx = '';
		for (var i = 0; i < recent_contacts_list.length; i++) {
			var item_wxid = recent_contacts_list[i].wxid;
			if (item_wxid == data.wxid) {
				result = true;
				idx = i;
			}
		}
		if (result) {
			//重新渲染联系人列表并置顶
			var new_msg_item = recent_contacts_list.splice(idx, 1);
			recent_contacts_list.splice(0, 0, new_msg_item[0]);
			renderContactslist(recent_contacts_list);

			//在联系人列表能找到对应wxid，更新未读消息和显示内容并置顶
			var contact_item_content = D(content_id);
			var contact_item_circle = D(circle_id);
			var contact_item_unread = D(unread_id);
			var contact_item_time = D(time_id);

			//更新未读消息
			var unread = Number(contact_item_unread.innerHTML);
			unread += unreadRaise;
			contact_item_unread.style.display = unread == 0 ? "none" : "block";
			contact_item_unread.innerHTML = unread;
			recent_contacts_list[idx].unread = unread;

			//更新显示内容
			contact_item_content.innerHTML = data.content;
			contact_item_circle.className = "circl hide";

			//更新消息时间
			contact_item_time.innerHTML = tool.formatDate('hh:ii', data.__t);

		} else {
			//找不到对应wxid，往联系人列表添加一条数据并置顶

			//将新联系人添加至最近联系人列表
			var newItemObj = {
				ID: data.id,
				wxid: data.wxid,
				content: data.content,
				lastline: data.__t,
				usernick: data.usernick,
				heardpic: data.heardpic,
				unread: unreadRaise
			}
			recent_contacts_list.splice(0, 0, newItemObj);
			renderContactslist(recent_contacts_list);
		}
	}
}

// 获取最近联系人列表
function getRelatedList() {
	var number = 500;
	var data_opt = {
		type: "RecentContacts/GetList",
		data: {
			robot_name: robot_name,
			number: number,
		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
}

// 获取最近联系人列表--回调
function getRelatedListCallback(data) {

	//保存最近联系人列表
	recent_contacts_list = JSON.parse(JSON.stringify(data));
	//渲染
	if (data.length != 0) {
		//渲染最近联系人列表
		renderContactslist(data);
	} else {
		modal.tips("最近联系人列表为空");
	}
}

// 重新渲染最近联系人列表，并置顶
function renderContactslist(data) {
	var now = new Date().getTime();
	var cur_date = tool.formatDate("yy-mm-dd", now);
	var cur_year = tool.formatDate("yy", now);
	var html = '';
	for (var i in data) {
		var item = data[i];
		// var is_img = item.content.indexOf("data:image/jpg;base64,");
		html += '<div expand_sotf_type="recentcontacts_button" class="u-item" style="top:' + (i * 70) + 'px" data-wxid="' + item.wxid + '" data-usernick="' + item.usernick + '"  id="' + item.wxid + '">';
		html += '<div class="avatar" data-wxid="' + item.wxid + '" onclick="viewUserDetail(this,1)">';
		html += '<img class="lazy" data-original="' + (item.heardpic || Robot_Avatar) + '" alt="">';
		html += '<div class="unread" style="display:' + (item.unread == 0 ? "none" : "block") + '" id="unread' + item.wxid +
			'">' + item.unread + '</div>';
		html += '</div>';
		html += '<div class="info" data-wxid="' + item.wxid + '" data-usernick="' + item.usernick + '" data-avatar="' + (item
				.heardpic || Robot_Avatar) +
			'">';
		html += '<p>';
		html += '<span class="nickname ellipsis">' + item.usernick + '</span>';
		if (tool.formatDate('yy-mm-dd', item.lastline) == cur_date) {
			//消息日期为当天，显示 时和分
			html += '<span class="time" id="time' + item.wxid + '">' + (tool.formatDate('hh:ii', item.lastline)) + '</span>';
		} else {
			//消息日期不为当天
			if (tool.formatDate('yy', item.lastline) == cur_year) {
				//消息日期为当年，显示 月和日
				html += '<span class="time" id="time' + item.wxid + '">' + (tool.formatDate('mm-dd', item.lastline)) + '</span>';
			} else {
				//消息日期不为当年，显示 年、月、日
				html += '<span class="time" id="time' + item.wxid + '">' + (tool.formatDate('yy-mm-dd', item.lastline)) + '</span>';
			}
		}
		var tags = item.tags ? tagsicno(item.tags) : "";
		html += '</p>';
		html += '<p class="ellipsis">' + tags;
		html += '<span id="content' + item.wxid + '">' + item.content + '</span>';
		html += '<span class="circle hide" id="circle' + item.wxid + '"></span>';
		html += '</p>';
		html += '</div>';
		html += '</div>';
	}

	D("dropView").innerHTML = html;
	//当前消息高亮
	if (contact_item_wxid) {
		D(contact_item_wxid).classList.add("active");
	}

	//初始化最近联系人列表事件
	initBindRekatedEvent();


	$("img.lazy").lazyload({ 
		container: $("#dropView") 
	}); 

}

function tagsicno(tags)
{
	if(tags == null) return "";

	var iconHtml = "";
	var arr = tags.split(',');
	for (var index in arr){
		if(arr[index].length == 0) continue;
		var tagsname = arr[index];
		if(tags_array[tagsname])
		{
			iconHtml += '<img width="12" height="12" src="' + tags_array[tagsname].icon + '" />';
		}
	}

	if(iconHtml != "")
	{
		iconHtml = '<span style="padding-left:3px; position:absolute;right:0px ; top:2px ">' + iconHtml + '</span>';
	}

	return iconHtml;
}


// 初始化最近联系人列表事件--click,hover
function initBindRekatedEvent() {
	var doms = document.getElementsByClassName("info");
	for (let i = 0; i < doms.length; i++) {
		//dblclick
		doms[i].onclick = function () {
			//取消加载中动画
			D("loading").style.display = "none";

			var $tar = $(this).parent();
			if (!$tar.hasClass("active")) {
				$tar.addClass("active");
				$tar.siblings().removeClass("active");
				$tar.siblings().removeClass("hover");
				$tar.find('.unread')[0].style.display = "none";
				this.getElementsByClassName("circle")[0].style.display = "none";
			}
			var wxid = this.getAttribute("data-wxid");
			contact_item_wxid = wxid;

			for (var idx in recent_contacts_list) {
				if (recent_contacts_list[idx].wxid == wxid) {
					recent_contacts_list[idx].unread = 0;
				}
			}

			//显示聊天窗口和右侧用户信息--打开
			D("middle_chat_area").style.display = "block";
			D("right_baseinfo_area").style.display = "block";

			var unread_id = "unread" + wxid;
			D(unread_id).innerHTML = 0;

			contact_item_avatar = this.getAttribute("data-avatar");

			//获取对话聊天记录--先清空消息记录
			global_record_data = [];
			getChatRecord(wxid, 0);

			//聊天记录触底
			once_load = true;

			//标记当前消息为已读
			markMsgRead(wxid);

			//解除单次发送消息
			once_send = false;

			//更新聊天窗口顶部用户昵称
			var usernick = this.getAttribute("data-usernick");
			contact_item_usernick = usernick;
			D("chat-nickname").innerHTML = usernick;

			//初始化右侧区域显示为“快捷回复”
			initRightShowQuick();

			//编辑器聚焦
			CHAT_EDITOR.focus();
			//CHAT_EDITOR.html('&nbsp;');
			// CHAT_EDITOR.html('');

			setTimeout(function () {
				CHAT_EDITOR.focus();
			}, 500);
		}

		//mouseenter
		doms[i].onmouseenter = function () {
			var $tar = $(this).parent();
			if (!$tar.hasClass("active")) {
				$tar.addClass('hover');
			}
		}

		//mouseleave
		doms[i].onmouseleave = function () {
			var $tar = $(this).parent();
			if (!$tar.hasClass("active")) {
				$tar.removeClass('hover');
			}
		}
	}
}

// 初始化右侧显示为“快捷回复”
function initRightShowQuick() {
	D("quick-reply").style.display = "block";
	D("user-detail").style.display = "none";

	//初始化样式
	D("quick-reply-btn").classList.add("active");
	D("user-detail-btn").classList.remove("active");
}

// 标记消息为已读
function markMsgRead(wxid) {
	var data_opt = {
		type: "Message/MarkRead",
		data: {
			robot_name: robot_name,
			wxid: wxid
		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
}

// 标记消息为已读--回调
function markMsgReadCallback(res) {
	// alert(JSON.stringify(res))
	// if (res.code == 100) {
	//     modal.tips(res.message || '标记成功');
	// } else {
	//     modal.tips(res.error || '标记失败');
	// }
}

// 最近联系人--显示
function showRelated(e) {
	if (is_IM_init) {
		e.classList.add('active');
		e.nextElementSibling.classList.remove('active');
		D('dropView').style.display = 'block';
		D('contactGroup').style.display = 'none';

		// 获取最近联系人列表
		getRelatedList();
	} else {
		modal.tips("请从左边选择一个机器人");
	}
}


// 好友列表--显示
function showGroup(e) {
	if (is_IM_init) {
		e.classList.add('active');
		e.previousElementSibling.classList.remove('active');
		D('dropView').style.display = 'none';
		D('contactGroup').style.display = 'block';

		//获取好友分组组名
		getGroupName();
	} else {
		modal.tips("请从左边选择一个机器人");
	}
}

// 获取好友分组组名
function getGroupName() {
	var data_opt = {
		type: "Friend/GetGroup",
		data: {

		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
}

// 获取好友分组组名--回调
function getGroupNameCallback(data) {
	if (data.length != 0) {
		var html = '';
		for (var i in data) {
			var item = data[i];
			html += '<div class="group-item">';
			html += '<a href="javascript:;" class="group-name" onclick="toggleShow(' + item.id + ',this)">';
			html += '<i class="icon-jslt-15 arrow-right" id="arrow-right"></i>';
			html += '<i class="icon-jslt-18 arrow-bottom" id="arrow-bottom"></i>';
			html += '&nbsp;<span>' + item.group_name + '&nbsp;&nbsp;<span class="count-friends">' + item.number +
				'</span> </span>';
			html += '</a>';
			html += '<div class="group-member" id="group_name' + item.id + '"></div>';
			html += '</div>';

			D("contactGroup").innerHTML = html;
		}

	} else {
		modal.tips("无好友分组");
	}
}

// 好友列表--好友分组显示与隐藏
var memberId = null;

function toggleShow(group_id, e) {
	memberId = "group_name" + group_id;
	var arrow_right = e.firstElementChild;
	var arrow_bottom = arrow_right.nextElementSibling;
	if (e.classList.contains('on-active')) {
		arrow_bottom.style.display = "none";
		arrow_right.style.display = "inline";
		D(memberId).style.display = "none";
		//切换样式
		e.classList.toggle('on-active');
	} else {
		arrow_bottom.style.display = "inline";
		arrow_right.style.display = "none";
		D(memberId).style.display = "block";
		//切换样式
		e.classList.toggle('on-active');

		//获取好友分组列表
		getGroupList(group_id)
	}
}

// 获取好友分组列表
function getGroupList(group_id) {
	var data_opt = {
		type: "Friend/GetList",
		data: {
			robot_name: robot_name,
			group_id: group_id
		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
}

// 获取好友分组列表--回调
function getGroupListCallback(data) {
	if (data.length != 0) {
		var html = '';
		for (var i in data) {
			var item = data[i];
			// var is_img = item.content.indexOf("data:image/jpg;base64,");
			// 
			var tags = item.tags ? tagsicno(item.tags) : "";
			html += '<div class="member-item">';
			html += '<div class="avatar" data-wxid="' + item.wxid + '" onclick="viewUserDetail(this,1)">';
			html += '<img src="' + (item.heardpic || Robot_Avatar) + '" alt="">';
			html += '</div>';
			html += '<div class="info-base" data-wxid="' + item.wxid + '" data-usernick="' + item.usernick + '" data-avatar="' +
				(item.heardpic || Robot_Avatar) + '">';
			html += '<p><span class="nickname ellipsis">' + item.usernick + '</span>'   + tags + '</p>';

			html += '</div>';
			html += '</div>';
		}

		D(memberId).innerHTML = html;

		//初始化好友分组列表事件
		initBindGroupEvent();
	}
}

// 初始化好友分组列表事件 -- click,hover
function initBindGroupEvent() {
	var groupDoms = document.getElementsByClassName("info-base");
	for (let i = 0; i < groupDoms.length; i++) {
		//dblclick
		groupDoms[i].onclick = function () {
			//取消加载中动画
			D("loading").style.display = "none";

			var $tar = $(this).parent();
			if (!$tar.hasClass("active")) {
				$tar.addClass("active");
				for (let j = 0; j < groupDoms.length; j++) {
					if (i != j) {
						groupDoms[j].parentElement.classList.remove('active');
						groupDoms[j].parentElement.classList.remove('hover');
					}
				}
			}
			var wxid = this.getAttribute("data-wxid");
			contact_item_wxid = wxid;

			contact_item_avatar = this.getAttribute("data-avatar");

			//标记当前消息为已读
			markMsgRead(wxid);

			//解除单次发送消息
			once_send = false;

			//更新聊天窗口顶部用户昵称
			var usernick = this.getAttribute("data-usernick");
			contact_item_usernick = usernick;
			D("chat-nickname").innerHTML = usernick;

			//聊天记录触底
			once_load = true;

			//获取对话聊天记录--先清空消息记录
			global_record_data = [];
			getChatRecord(wxid, 0);

			//初始化右侧区域显示为“快捷回复”
			initRightShowQuick();

			//显示聊天窗口和右侧用户信息--双击打开
			D("middle_chat_area").style.display = "block";
			D("right_baseinfo_area").style.display = "block";

		}

		//mouseenter
		groupDoms[i].onmouseenter = function () {
			var $tar = $(this).parent();
			if (!$tar.hasClass("active")) {
				$tar.addClass('hover');
			}
		}

		//mouseleave
		groupDoms[i].onmouseleave = function () {
			var $tar = $(this).parent();
			if (!$tar.hasClass("active")) {
				$tar.removeClass('hover');
			}
		}
	}
}

// 获取对话聊天记录
function getChatRecord(wxid, id) {
	//显示加载中动画
	D("loading").style.display = "block";
	var number = 20;

	var data_opt = {
		type: "ChatRecord/GetList",
		data: {
			robot_name: robot_name,
			wxid: wxid,
			id: id,
			number: number
		}
	}

	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
}

// 获取对话聊天记录--回调
function getChatRecordCallback(data) {




	// 默认对话框的高度
	var scroll = D("chat-list").scrollHeight;
	//如果想把局部变量变成全局变量
	(function (win) {
		var bbb = scroll; //局部变量
		win.bbb = bbb;
	})(window);
	//  外部可以访问这个局部变量了
	//   alert(bbb);






	var _formatDate = function (date, fmt) {
		var o = {
			"M+": date.getMonth() + 1, //月份
			"d+": date.getDate(), //日
			"h+": date.getHours(), //小时
			"m+": date.getMinutes(), //分
			"s+": date.getSeconds(), //秒
			"q+": Math.floor((date.getMonth() + 3) / 3), //季度
			"S": date.getMilliseconds() //毫秒
		};
		if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
		for (var k in o)
			if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[
				k]).substr(("" + o[k]).length)));
		return fmt;
	};

	var _getTimeStringAutoShort2 = function (timestamp, mustIncludeTime) {

		// 当前时间
		var currentDate = new Date();
		// 目标判断时间
		var srcDate = new Date(parseInt(timestamp));
		var currentYear = currentDate.getFullYear();
		var currentMonth = (currentDate.getMonth() + 1);
		var currentDateD = currentDate.getDate();

		var srcYear = srcDate.getFullYear();
		var srcMonth = (srcDate.getMonth() + 1);
		var srcDateD = srcDate.getDate();

		var ret = "";

		// 要额外显示的时间分钟
		var timeExtraStr = (mustIncludeTime ? " " + _formatDate(srcDate, "hh:mm") : "");

		// 当年
		if (currentYear == srcYear) {
			var currentTimestamp = currentDate.getTime();
			var srcTimestamp = timestamp;
			// 相差时间（单位：毫秒）
			var deltaTime = (currentTimestamp - srcTimestamp);

			// 当天（月份和日期一致才是）
			if (currentMonth == srcMonth && currentDateD == srcDateD) {
				// 时间相差60秒以内
				if (deltaTime < 60 * 2000)
					ret = "刚刚";
				// 否则当天其它时间段的，直接显示“时:分”的形式
				else
					ret = _formatDate(srcDate, "hh:mm");
			}
			// 当年 && 当天之外的时间（即昨天及以前的时间）
			else {
				// 昨天（以“现在”的时候为基准-1天）
				var yesterdayDate = new Date();
				yesterdayDate.setDate(yesterdayDate.getDate() - 1);

				// 前天（以“现在”的时候为基准-2天）
				var beforeYesterdayDate = new Date();
				beforeYesterdayDate.setDate(beforeYesterdayDate.getDate() - 2);

				// 用目标日期的“月”和“天”跟上方计算出来的“昨天”进行比较，是最为准确的（如果用时间戳差值
				// 的形式，是不准确的，比如：现在时刻是2019年02月22日1:00、而srcDate是2019年02月21日23:00，
				// 这两者间只相差2小时，直接用“deltaTime/(3600 * 1000)” > 24小时来判断是否昨天，就完全是扯蛋的逻辑了）
				if (srcMonth == (yesterdayDate.getMonth() + 1) && srcDateD == yesterdayDate.getDate())
					ret = "昨天" + timeExtraStr; // -1d
				// “前天”判断逻辑同上
				else if (srcMonth == (beforeYesterdayDate.getMonth() + 1) && srcDateD == beforeYesterdayDate.getDate())
					ret = "前天" + timeExtraStr; // -2d
				else {
					// 跟当前时间相差的小时数
					var deltaHour = (deltaTime / (3600 * 1000));

					// 如果小于或等 7*24小时就显示星期几
					if (deltaHour <= 7 * 24) {
						var weekday = new Array(7);
						weekday[0] = "星期日";
						weekday[1] = "星期一";
						weekday[2] = "星期二";
						weekday[3] = "星期三";
						weekday[4] = "星期四";
						weekday[5] = "星期五";
						weekday[6] = "星期六";

						// 取出当前是星期几
						var weedayDesc = weekday[srcDate.getDay()];
						ret = weedayDesc + timeExtraStr;
					}
					// 否则直接显示完整日期时间
					else
						ret = _formatDate(srcDate, "yyyy/M/d") + timeExtraStr;
				}
			}
		}
		// }

		// 往年
		else {
			ret = _formatDate(srcDate, "yyyy/M/d") + timeExtraStr;
		}

		return ret;
	};

	//倒序显示
	data.reverse();
	global_record_data = data.concat(global_record_data);

	if (global_record_data.length != 0) {
		if (data.length != 0) {
			//获取每次结果最小id值
			record_min_id = data[0].ID;
			for (var i = 0; i < data.length; i++) {
				if (record_min_id > data[i].ID) {
					record_min_id = data[i].ID
				}
			}

			//显示“查看更多消息”
			D("view-more").style.display = "block";
		} else {
			//隐藏“查看更多消息”
			D("view-more").style.display = "none";
		}


		//有聊天记录,渲染
		var html = '';
		for (var i = 0; i < global_record_data.length; i++) {
			var item = global_record_data[i]

			// 时间戳判断
			if (i >= 1) {
				var Difference_time = (global_record_data[i].t - global_record_data[i - 1].t)
				if (Difference_time >= 20000) {
					var time = _getTimeStringAutoShort2(item.t, true);
					html += '<div class="chat-time">' + time + '</div>'
				}
			}


			html += '<div class="chat-item clearfix ' + (item.from_wxid == "localhost" ? "self" : "") + '" data-id="' + item.ID +
				'">';
			html += '<div class="avatar">';
			if (item.from_wxid == "localhost") {
				html += '<img src="' + default_avatar + '" data-wxid="' + item.wxid + '" onclick="viewUserDetail(this,0)">';
			} else {
				html += '<img src="' + contact_item_avatar + '" data-wxid="' + item.wxid + '" onclick="viewUserDetail(this,1)">';
			}
			html += '</div>';
			html += '<div class="chat-cont">';
			html += '<div class="cont">' + formatChat(item.content) + '</div>';
			html += '<div class="triangle"></div>';
			html += '<div class="msg-unsend">';
			if (item.status == 1) {
				//1:已推送给机器人，等待机器人通知
				html += '<img src="./assets/images/loading.gif" alt="">';
			} else if (item.status == -1 || item.status == -2) {
				//-1:无法推送给服务器或者机器人不在线 -2：发送失败
				html += '<img src="./assets/images/fail.svg" class="failed">';
			} else if (item.status == 9) {
				//9：成功发送用户
			}
			html += '</div>';
			html += '</div>';
			html += '</div>';
		}
		D("chat-list").innerHTML = html;
	} else {
		//隐藏“查看更多消息”
		D("view-more").style.display = "none";

		//清空聊天区内容
		D("chat-list").innerHTML = '';
	}

	//解除单次获取消息记录
	record_once_get = false;

	//取消加载中动画
	D("loading").style.display = "none";
















	//聊天记录置底，显示最后一条
	if (once_load) {
		// 	$("#m-chat-body").scrollTop($("#m-chat-body")[0].scrollHeight);
		// $('#m-chat-body').scrollTop($('#m-chat-body')[0].height());
		// ($('#chat-list').children("div:last-child")[0]).scrollIntoView();
		scrollToBottom();
		// setTimeout(() => {
		// 	// scrollToBottom()
		// 	$("#m-chat-body").scrollTop($("#m-chat-body")[0].scrollHeight);
		// }, 50);
	} else {
		scrollTop();
	}













	//查看更多定位
	// if (first_node_id !== null) {
	// 	if (document.querySelector !== null) {
	// 		var offsetTop = document.querySelector('[data-id="' + first_node_id + '"]').offsetTop - 36;
	// 		D("m-chat-body").scrollTop = offsetTop;
	// 	} else {
	// 		return
	// 	}


	// var offsetTop = document.querySelector('[data-id="' + first_node_id + '"]').offsetTop - 36;
	// D("m-chat-body").scrollTop = offsetTop;


	// }

}

// 查看更多消息记录
var record_once_get = false;
var first_node_id = null;

function viewMoreRecord() {
	//记录消息列表第一个DOM节点，用于“查看更多消息”的定位
	first_node_id = D("chat-list").firstElementChild.getAttribute("data-id");
	//取消首次加载触底
	once_load = false;

	//单次获取
	if (record_once_get) {
		return;
	}
	record_once_get = true;
	getChatRecord(contact_item_wxid, record_min_id);
}

// 聊天记录默认置底，显示最新一条
function scrollToBottom() {
	var scrollHeight = D("m-chat-body").scrollHeight;
	// var chatArea = document.getElementById("m-chat-body")
	D("m-chat-body").scrollTop = scrollHeight;
}

// 打开更多聊天信息的位置
function scrollTop() {

	var a = D("m-chat-body").scrollHeight;
	D("m-chat-body").scrollTop = a - bbb;
}

// 点击头像查看用户详情
function viewUserDetail(e, t) {
	userType = t;
	detail_from = "avatar";
	var wx_id = e.getAttribute("data-wxid");
	getUserInfo(wx_id);
	// var url = "./html/detail.html?robot_name=" + robot_name + "&wx_id=" + wx_id;
	// window.open(url);
}

// 关闭用户详情弹出框
function closeUinfoBox() {
	D("m-uinfo-box-cover").style.display = "none";
}


//快捷回复输入框正则匹配只能输入0~100






// alert(myVal2)
// 	增加
// QuickReply/Add
// 字段：content（内容），indexs（排序），types（快捷回复类型-数字：0图文，1图片）


// 增加快捷回复
function handleIncrease() {
	// 文本框内容
	var myVal = document.getElementById("myText").value;
	// alert(myVal)
	// 排序框内容
	var myVal1 = document.getElementById("input").value;
	// alert(myVal1)
	// 快捷回复的类型
	var b1 = document.getElementsByName('change');

	for (var i = 0; i < b1.length; i++) {
		if (b1[i].checked == true) {
			myVal2 = b1[i].value
			// alert(myVal2)
		}
	}
	var data_opt = {
		type: "QuickReply/Add",
		data: {
			content: myVal,
			indexs: myVal1,
			types: myVal2
		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
	setTimeout(function () {
		// 获取快捷回复列表
		getPersonalQuickReply();
	}, 100)
	// CHAT_EDITOR.insertHtml('我点击了右键')
	// })
	D("add-new-quick-box").style.display = "none";

}


// 修改
// QuickReply/Update
// 字段：id（），content（内容），indexs（排序），types（快捷回复类型-数字：0图文，1图片）

// 修改快捷回复
function handleModify1(data) {
	// 文本框内容
	var Val1 = document.getElementById("myText1").value;
	// alert(Val1)
	// 排序框内容
	var Val2 = document.getElementById("input1").value;
	// alert(Val2)
	// 快捷回复的类型
	var b2 = document.getElementsByName('change1');
	// alert(b2)
	for (var i = 0; i < b2.length; i++) {
		if (b2[i].checked == true) {
			Val3 = b2[i].value
			// alert(Val3)
		}
	}
	var data_opt = {
		type: "QuickReply/Update",
		data: {
			// id: 123,
			content: Val1,
			indexs: Val2,
			types: Val3
		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
	setTimeout(function () {
		// 获取快捷回复列表
		getPersonalQuickReply();
	}, 100)
	// CHAT_EDITOR.insertHtml('我点击了右键')
	D("add-new-quick-box1").style.display = "none";

}


// 删除
// QuickReply/Delete
// 字段：id（）

// 删除快捷方式
function handleDelete() {
	var data_opt = {
		type: "QuickReply/Delete",
		data: {
			// id: 123,
			// content: myVal,
			// indexs: myVal1,
			// types: myVal2
		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);
	setTimeout(function () {
		// 获取快捷回复列表
		getPersonalQuickReply();
	}, 100)
	// CHAT_EDITOR.insertHtml('我点击了右键')
	D("add-new-quick-box2").style.display = "none";

}

// 隐藏系统菜单
document.oncontextmenu = function (ev) {
	return false;
};

// 监听全局点击事件

// var movex; var movey;                     //用来接受鼠标位置的全局变量
// function mousemove(e)
// {
//        e=e  || window.event;
//        if(e.pageX || e.pageY)
//        {
//                 movex=e.pageX;
//                 movey=e.pageY
// 	}
// 	alert(movex)
// }

// document.onmousemove=mousemove

// var div = document.getElementById("personal-quick"); //获取元素
// EventUtil.on(div, "click", function(event){
//  event = EventUtil.getEvent(event);
//  alert("Screen coordinates: " + event.screenX + "," + event.screenY);
// });



// 右键菜单 -- click,hover
function initQuickReplyRightEvent() {

	var quickDoms = document.getElementsByClassName("quick-item");
	// var e = document.body.scrollLeft;
	// var positionY = document.body.scrollTop;
	// var positionX = document.body.scrollLeft;
	// e= e || window.event;
	// var movex=e.pageX;
	// var movey=e.pageY;
	// var x=event.clientX;
	// var y=event.clientY;
	// alert("X coords: " + x + ", Y coords: " + y);
	// alert(JSON.stringify(quickDoms))
	// for (var i in quickDoms) {
	// 	// click

	// 	quickDoms[i].oncontextmenu = function () {
	// 		D('menu').style.display = D('menu').style.display === 'none' ? 'block' : 'none'

	// 	}
	// }
}

// alert(e.path);

// document.body.innerHTML = JSON.stringify(window);
// document.body.innerHTML = JSON.stringify();



// CHAT_EDITOR.insertHtml('a', typeof 1)
// return;

// alert(event.button)

// 右击
// if (event.button == 2) {

// 	CHAT_EDITOR.insertHtml('我点了右键')



// 	alert(path.length)


// }

// // 左击
// if (event.button == 0) {
// 	CHAT_EDITOR.insertHtml('我点了左键')
// 	handleToggleMenu(false);
// 	alert(event.composedPath())
// }


// 菜单[显示|隐藏]
function handleToggleMenu(judge, opts) {
	var elMenu = document.querySelector('#menu');
	if (judge) {
		//让自定义菜单随鼠标的箭头位置移动
		elMenu.style.left = opts.left + "px";
		elMenu.style.top = opts.top + "px";
		elMenu.style.display = 'block';
	} else {
		elMenu.style.display = 'none';
	}
}


// // 点击右键菜单
// // 绑点鼠标右键的点击事件
// function handleRightclick(ctx, e) {
// 	// e.stopImmediatePropagation()
// 	var e = e || window.event;
// 	e.stopPropagation();
// 	// alert(e.button)
// 	if (e.button == 2) {

// 		// alert(12321)

// 		// return;
// 		// handleToggleMenu(true);


// 		return;
// 		//如果button=1（鼠标左键），button=2（鼠标右键），button=0（鼠标中间键）
// 		console.dir('右击');
// console.log('Y', e.offsetY); //打印出鼠标点击的Y轴坐标
// console.log('X', e.offsetX); //打印出鼠标点击的X轴坐标
// positionY = e.offsetY;
// positionX = e.offsetX;
// //让自定义菜单随鼠标的箭头位置移动
// menu.style.left = e.offsetX + "px";
// menu.style.top = e.offsetY + "px";
// 	}
// }
// // 菜单显示
// document.onclick = function (e) {
// 	var e = e || window.event;
// 	alert(12321)
// 	return;
// 	// handleToggleMenu(false);
// }

// // document.addEventListener('click', function (e) {
// // 	// alert(e)
// // 	var e = e || window.event;
// // 	// handleToggleMenu(false);
// // }, false);

// // //实现点击document，自定义菜单消失
// // document.onclick = function() {
// //   menu.style.display = "none";
// // };














// 获取快捷回复列表 -- 个人
// setTimeout(function getPersonalQuickReply() {
// 	quick_type = "personal";
// 	var data_opt = {
// 		type: "QuickReply/GetList",
// 		data: {
// 			kf_id: 0,

// 			types: 0
// 		}
// 	}
// 	data_opt = JSON.stringify(data_opt);
// 	D("personal-quick").innerHTML = '<p style="text-align:center; padding:16px 0;">加载中</p>';


// 	initAjax(data_opt);
// }, 100)
function getPersonalQuickReply() {
	quick_type = "personal";
	var data_opt = {
		type: "QuickReply/GetList",
		data: {}
	}
	data_opt = JSON.stringify(data_opt);
	D("personal-quick").innerHTML = '<p style="text-align:center; padding:16px 0;">加载中</p>';


	initAjax(data_opt);
}

// 获取快捷回复列表 -- 公共
function getPublicQuickReply() {
	quick_type = "public";
	var data_opt = {
		type: "QuickReply/GetList",
		data: {
			kf_id: 0,
			types: 1
		}
	}
	data_opt = JSON.stringify(data_opt);
	D("public-quick").innerHTML = '<p style="text-align:center; padding:16px 0;">加载中</p>';

	initAjax(data_opt);


}
// 渲染文字
// function a(data) {
// 	// alert(JSON.stringify(data))

// 	D("personal-quick").innerHTML = html;

// 	// 绑定事件
// 	initQuickReplyEvent();
// }
// // 渲染图片
// function s(data) {
// 	D("public-quick").innerHTML = html;

// 	// 绑定事件
// 	initQuickReplyEvent();
// 	initQuickReplyRightEvent();
// }

// 获取快捷回复列表 -- 回调
function getQuickReplyCallback(data) {
	var list = data.data;



	// 定义一个strTmp = list[i].content


	// alert(JSON.stringify(list))
	if (list.length != 0) {
		var html = '';
		for (var i in list) {
			str2 = list[i].content
			// alert(str2)
			// 如果 list[i].content.substr(1,2) === '图片'
			// 
			var expand_sotf = 'expand_sotf_type="quickreply_button" aid="' + list[i].id + '" softtext="' + str2 + '" ';
			if (list[i].content.substr(0, 4) === 'http') {
			// if (list[i].content.substr(1, 2) === '图片') {

				// 如果是图片就执行这个
				html += '<div '+ expand_sotf +' class="quick-item">';
				// 全局定义快捷回复列表的图片路径
				var str = list[i].content
				str1 = '[图片=' + str + ']'

				// str1
				var str2 = str1.slice(4, -1)
				// alert(str1)

				// 在div里拼接一个img标签
				// 1. 获取path
				html += '<img src="' + str2 + '" style="width:100%; height:30%;"/>';
				// '[图片='+str+']'
				html += '</div>';
			} else {
				// 如果不是图片
				html += '<div '+ expand_sotf +' class="quick-item">';
				html += list[i].content;
				html += '</div>';
			}
			// 如果不是图片
			// html += '<div class="quick-item">';
			// html += list[i].content;
			// html += '</div>';

			// 如果是图片就执行这个

			// html += '<div class="quick-item">';
			// // 在div里拼接一个img标签
			// // 1. 获取path
			// // 2. 修改一下样式 stype width height
			// html += '<img src="' + path + '" data-uuid="' + uuid + '" id="' + uuid + '" onclick="viewLargePic(this)" />';
			// html += '</div>';





			types = JSON.stringify(list[i].types)
			// alert(types)
			// 渲染文字
			if (types == 0) {
				if (quick_type = "personal") {
					D("personal-quick").innerHTML = html;
					// a()
					// 绑定事件
					initQuickReplyEvent();
				}
			}
			// 渲染图片
			if (types == 1) {
				if (quick_type = "public") {
					D("public-quick").innerHTML = html;
					// s()
					// 绑定事件
					initQuickReplyEvent();
					initQuickReplyRightEvent();
				}
			}
		}
		// var types = JSON.stringify(list[i].types)

		// // 渲染文字
		// if (types == 0) {
		// 	if (quick_type = "personal") {
		// 		D("personal-quick").innerHTML = html;
		// 		// a()
		// 		// 绑定事件
		// 		initQuickReplyEvent();
		// 	}
		// } else {
		// 	if (quick_type = "public") {
		// 		D("public-quick").innerHTML = html;
		// 		// s()
		// 		// 绑定事件
		// 		initQuickReplyEvent();
		// 		initQuickReplyRightEvent();
		// 	}
		// }
		// if (quick_type = "personal") {
		// 	D("personal-quick").innerHTML = html;
		// 	// a()
		// 	// 绑定事件
		// 	initQuickReplyEvent();
		// }

		// 渲染图片
		// if (quick_type = "public") {
		// 	D("public-quick").innerHTML = html;
		// 	// s()
		// 	// 绑定事件
		// 	initQuickReplyEvent();
		// 	initQuickReplyRightEvent();
		// }
	}
}

// 个人快捷回复--显示与隐藏
function showPersonalQuick(e) {
	if (!e.classList.contains('active')) {
		e.classList.add('active');
		e.nextElementSibling.classList.remove('active');
		D('personal-quick').style.display = 'block';
		D('public-quick').style.display = 'none';
	}

	// 获取个人快捷回复
	getPersonalQuickReply();
}

// 公共快捷回复--显示与隐藏
function showPublicQuick(e) {
	if (!e.classList.contains('active')) {
		e.classList.add('active');
		e.previousElementSibling.classList.remove('active');
		D('personal-quick').style.display = 'none';
		D('public-quick').style.display = 'block';
	}

	// 获取公共快捷回复
	getPublicQuickReply();
}

// 快捷回复 -- click,hover
function initQuickReplyEvent() {
	var quickDoms = document.getElementsByClassName("quick-item");


	for (var i in quickDoms) {
	quickDoms[i].onclick = function (e) {
		// var data_id = this.data.data
		// alert(JSON.stringify(e))
		// image = e.
		// 将快捷文字添加到输入框
		if (types == 0) {
			var text = this.innerText;
			CHAT_EDITOR.insertHtml(text)
		}
		// 将图片添加到输入框
		if (types == 1) {
			// var image = this.innerHTML
			// var image = str1
			// '[图片=' + e.target.currentSrc + ']'
			CHAT_EDITOR.insertHtml('[图片=' + e.target.currentSrc + ']')

		}
		// alert(JSON.stringify(this.innerHTML))
		//将快捷回复插入到光标处
		// var text = this.innerText;
		// // 接收快捷聊天回复的图片
		// var image = str
		// // alert(image)

		// // alert(data_id)
		// // CHAT_EDITOR.insertHtml('我点击了右键')
		// CHAT_EDITOR.insertHtml(text)

		// CHAT_EDITOR.insertHtml(image)

	}

	//mouseenter
	quickDoms[i].onmouseenter = function () {
		// this.style.borderBottom = 'none';
		this.classList.add('active');
	}

	//mouseleave
	quickDoms[i].onmouseleave = function () {
		// this.style.borderBottom = '1px dashed #F0F0EE';
		this.classList.remove('active');
	}
	}
}

//快捷回复--tab切换
function showQuickReply(e) {
	e.classList.add('active');
	e.nextElementSibling.classList.remove('active');
	D('quick-reply').style.display = 'block';
	D('user-detail').style.display = 'none';
}

//用户详情--tab切换
function showUserDetails(e) {
	e.classList.add('active');
	e.previousElementSibling.classList.remove('active');
	D('quick-reply').style.display = 'none';
	D('user-detail').style.display = 'block';

	//获取用户详情
	detail_from = "page";
	getUserInfo(contact_item_wxid);

	//获取微信订单，返利
	getPurview(contact_item_wxid);
}

// 获取用户详情
function getUserInfo(wxid) {
	var data_opt = {
		type: "Friend/Get",
		data: {
			robot_name: robot_name,
			wxid: wxid
		}
	}
	data_opt = JSON.stringify(data_opt);
	D("base_user_info").innerHTML = '<p style="text-align:center; padding:16px 0;">加载中</p>';
	initAjax(data_opt);

}

// 获取用户详情--回调
function getUserInfoCallback(data) {
	var html = '';
	var wxinfo = JSON.parse(data.wxinfo);
	if (detail_from == "avatar") {
		if (userType == 0) {
			// 机器人头像信息
			html += '<img src="' + lut.pic + '" class="avatar">';
			html += '<p class="nickname">';
			// 机器人姓名信息
			html += '<span>' + lut.robot_name + '</span>';
			html += '<i class="icon-jslt-' + "" + '"></i>';
			html += '</p>';
			html += '<p class="account">账号：' + "" + '</p>';
			html += '<div class="other">';
			html += '<p><span>签 名</span><span class="ellipsis">' + "" + '</span></p>';
			html += '<p><span>地 区</span><span class="ellipsis">' + "" + '</span></p>';
			html += '</div>';

			D("m-uinfo-main").innerHTML = html;
			D("m-uinfo-box-cover").style.display = "block";
		} else {
			// 用户点击头像信息
			html += '<img src="' + data.heardpic + '" class="avatar">';
			html += '<p class="nickname">';
			html += '<span>' + data.usernick + '</span>';
			html += '<i class="icon-jslt-' + (wxinfo.Sex == 1 ? "06 male" : "07 famale") + '"></i>';
			html += '</p>';
			html += '<p class="account">账号：' + data.username + '</p>';
			html += '<div class="other">';
			html += '<p><span>签 名</span><span class="ellipsis">' + (wxinfo.Signature == "" ? "无" : wxinfo.Signature) +
				'</span></p>';
			html += '<p><span>地 区</span><span class="ellipsis">' + (wxinfo.Province != "" ? (wxinfo.Province + '&nbsp;&nbsp;' +
				wxinfo.City) : "无") + '</span></p>';
			html += '</div>';

			D("m-uinfo-main").innerHTML = html;
			D("m-uinfo-box-cover").style.display = "block";
		}
	} else if (detail_from == "page") {
		var html = '';
		html += '<div class="account-info">';
		html += '<div class="accout-type">';
		html += '<p class="ellipsis">微信号：' + data.username + '</p>';
		html += '<p class="ellipsis">属账号：' + data.usernick + '</p>';
		html += '</div>';
		html += '<div class="avatar-box">';
		html += '<img src="' + data.heardpic + '" alt="">';
		html += '</div>';
		html += '</div>';
		html += '<p class="ellipsis">签名：' + (wxinfo.Signature == "" ? "无" : wxinfo.Signature) + '</p>';
		html += '<div class="from">';
		html += '<p class="ellipsis">地区：' + (wxinfo.Province != "" ? (wxinfo.Province + '&nbsp;&nbsp;' + wxinfo.City) : "无") +
			'</p>';
		html += '<p class="ellipsis">来源：' + (data.origin || '') + '</p>';
		html += '<a id="refresh" href="javascript:getPurview(\'' + data.username + '\');"  onclick="getUserInfo(\'' + data.username + '\')">刷新</a>';

		html += '</div>';
		D("base_user_info").innerHTML = html;


	}

}

// 获取微信订单，返利
function getPurview(wxid) {
	var data_opt = {
		type: "Purview/Get",
		data: {
			robot_name: robot_name,
			wxid: wxid
		}
	}
	data_opt = JSON.stringify(data_opt);
	D("base_wx_info").innerHTML = '<p style="text-align:center; padding:16px 0;">加载中</p>';

	initAjax(data_opt);
}

// 获取微信订单，返利--回调
function getPurviewCallback(data) {
	var wx = data.wx;
	var order = data.order;
	if (wx) {
		var html = '';
		html += '<p class="ellipsis">完成订单：' + wx.finish_order + '笔</p>';
		// html += '<p class="ellipsis">待结算订单数：1笔</p>';
		html += '<p class="ellipsis">总积分：' + wx.sum_point + '元</p>';
		html += '<p class="ellipsis">当前积分：' + wx.cur_point + '元</p>';
		html += '<p class="ellipsis">购买积分：' + wx.buy_point + '元</p>';
		html += '<p class="ellipsis">提成积分：' + wx.ext_point + '元</p>';
		html += '<p class="ellipsis">其它奖励积分：' + wx.rew_point + '元</p>';
		// html += '<p class="ellipsis">推荐人数：""人</p>';
		// html += '<a id="refresh" href="javascript:getPurview(\'' + wx.finish_order + '\');">刷新</a>';

		D("base_wx_info").innerHTML = html;
		D("base_wx_info").style.display = "block";




	} else {
		D("base_wx_info").innerHTML = '';
		D("base_wx_info").style.display = "none";
	}

	if (order) {
		var html = '';
		html += '<p class="ellipsis">子订单号：' + order.trade_id + '</p>';
		html += '<p class="ellipsis">父订单号：' + order.trade_parent_id + '</p>';
		html += '<p class="ellipsis">店铺：' + order.seller_shop_title + '</p>';
		html += '<p class="ellipsis">商品：' + order.item_title + '</p>';
		html += '<p class="ellipsis">商品分类：' + order.auction_category + '</p>';
		// html += '<p class="ellipsis">分佣佣金：' + order.profit + '元</p>';
		// html += '<p class="ellipsis">订单状态：' + order.order_status + '</p>';
		// html += '<p class="ellipsis">平台：' + order.platform + '</p>';
		// html += '<p class="ellipsis">分佣等级：' + order.profit_level + '级</p>';
		// html += '<p class="ellipsis">' + tool.formatDate('yy-mm-dd hh:ii:ss', order.create_time) + ' 更新订单</p>';
		html += '<p class="ellipsis">' + order.create_time + ' 更新订单</p>';

		D("base_order_info").innerHTML = html;
		D("base_order_info").style.display = "block";
	} else {
		D("base_order_info").innerHTML = '';
		D("base_order_info").style.display = "none";
	}
}


// 查找用户
var search_timer = null;

function searchContacts(val) {
	if (is_IM_init) {
		clearTimeout(search_timer);
		if (val != '') {
			// 延时 0.3s 后开始请求
			search_timer = setTimeout(function () {
				var data_opt = {
					type: "Friend/Search",
					data: {
						robot_name: robot_name,
						keyword: val
					}
				}
				data_opt = JSON.stringify(data_opt);

				initAjax(data_opt);
			}, 300)
		} else {
			D('no-res').style.display = 'none';
			D('sch-res').style.display = 'none';
		}
	} else {
		modal.tips("请从左边选择一个机器人");
	}
}

// 查找用户--回调
var sch_contacts_list = [];

function searchContactsCallback(data) {
	sch_contacts_list = JSON.parse(JSON.stringify(data));
	if (data.length != 0) {
		//有搜索结果
		var html = '';
		for (var i in data) {
			var item = data[i];
			html += '<div class="sch-res-item" data-wxid="' + item.wxid + '" data-usernick="' + item.usernick +
				'" data-avatar="' + item.heardpic + '" data-idx="' + i + '">';
			html += '<div class="res-avatar">';
			if (item.heardpic) {
				html += '<img src="' + item.heardpic + '" alt="">';
			} else {
				html += '<img src="' + contact_item_avatar + '" alt="">';
			}
			html += '</div>';
			html += '<div class="res-info">';
			html += '<h4 class="nickname">' + item.usernick + '</h4>';
			html += '</div>';
			html += '</div>';
		}

		D("sch-res").innerHTML = html;

		//绑定搜索联系人结果列表事件--click,hover
		initBindSearchResultEvent();

		//显示列表
		D('sch-res').style.display = 'block';
		D('no-res').style.display = 'none';
	} else {
		//无搜索结果
		D('sch-res').style.display = 'none';
		D('no-res').style.display = 'block';
	}
}

function openNewWindowns(id,wxid,usernick,content,heardpic)
{
			var ontact_item_wxid = wxid;

			var contact_item_avatar = heardpic || Robot_Avatar;

			// 是否在最近联系人列表
			var result = false;
			var idx = '';
			for (var j = 0; j < recent_contacts_list.length; j++) {
				var item_wxid = recent_contacts_list[j].wxid;
				if (item_wxid == wxid) {
					result = true;
					idx = j;
				}
			}

			if (result) {
				//在最近联系人列表，置顶并打开聊天窗口
				recent_contacts_list[idx].unread = 0;
				var new_msg_item = recent_contacts_list.splice(idx, 1);
				recent_contacts_list.splice(0, 0, new_msg_item[0]);
				renderContactslist(recent_contacts_list);
			} else {
				//不在最近联系人列表，将新联系人添加至最近联系人列表
				var newItemObj = {
					ID: id,
					wxid: wxid,
					content: content,
					lastline: new Date().getTime(),
					usernick: usernick,
					heardpic: contact_item_avatar,
					unread: 0
				}
				recent_contacts_list.splice(0, 0, newItemObj);
				renderContactslist(recent_contacts_list);
			}


			//标记当前消息为已读
			setTimeout(function () {
				markMsgRead(wxid);
			}, 100);

			//更新聊天窗口顶部用户昵称
			contact_item_usernick = usernick;
			D("chat-nickname").innerHTML = usernick;

			//聊天记录触底
			once_load = true;
			//获取对话聊天记录--先清空消息记录
			global_record_data = [];

			setTimeout(function () {
				getChatRecord(wxid, 0)
			}, 100);

			//解除单次发送消息
			once_send = true;

			//初始化右侧区域显示为“快捷回复”
			initRightShowQuick();

			//将当前联系人添加至最近联系人列表
			setTimeout(function () {
				addtoRelatedList(wxid);
			}, 100);
}

// 绑定搜索联系人结果列表事件--click,hover
function initBindSearchResultEvent() {
	var doms = document.getElementsByClassName("sch-res-item");
	for (let i = 0; i < doms.length; i++) {
		//click
		doms[i].onclick = function () {

			var wxid = this.getAttribute("data-wxid");
			contact_item_wxid = wxid;

			contact_item_avatar = this.getAttribute("data-avatar");

			// 是否在最近联系人列表
			var result = false;
			var idx = '';
			for (var j = 0; j < recent_contacts_list.length; j++) {
				var item_wxid = recent_contacts_list[j].wxid;
				if (item_wxid == wxid) {
					result = true;
					idx = j;
				}
			}
			if (result) {
				//在最近联系人列表，置顶并打开聊天窗口
				recent_contacts_list[idx].unread = 0;
				var new_msg_item = recent_contacts_list.splice(idx, 1);
				recent_contacts_list.splice(0, 0, new_msg_item[0]);
				renderContactslist(recent_contacts_list);
			} else {
				//不在最近联系人列表，将新联系人添加至最近联系人列表
				var index = this.getAttribute("data-idx");
				var new_sch_item = sch_contacts_list[index];
				var newItemObj = {
					ID: new_sch_item.ID,
					wxid: new_sch_item.wxid,
					content: new_sch_item.content,
					lastline: new Date().getTime(),
					usernick: new_sch_item.usernick,
					heardpic: new_sch_item.heardpic,
					unread: 0
				}
				recent_contacts_list.splice(0, 0, newItemObj);
				renderContactslist(recent_contacts_list);
			}


			//标记当前消息为已读
			markMsgRead(wxid);

			//更新聊天窗口顶部用户昵称
			var usernick = this.getAttribute("data-usernick");
			contact_item_usernick = usernick;
			D("chat-nickname").innerHTML = usernick;

			//聊天记录触底
			once_load = true;

			//获取对话聊天记录--先清空消息记录
			global_record_data = [];
			getChatRecord(wxid, 0);

			//解除单次发送消息
			once_send = true;

			//初始化右侧区域显示为“快捷回复”
			initRightShowQuick();

			//将当前联系人添加至最近联系人列表
			setTimeout(function () {
				addtoRelatedList(wxid);
			}, 100)
		}

		//mouseenter
		doms[i].onmouseenter = function () {
			var $tar = $(this);
			$tar.addClass('hover');
		}

		//mouseleave
		doms[i].onmouseleave = function () {
			var $tar = $(this);
			$tar.removeClass('hover');
		}
	}
}

// 将当前联系人添加至最近联系人列表
function addtoRelatedList(wxid) {
	var data_opt = {
		type: "RecentContacts/UpdateIndex",
		data: {
			robot_name: robot_name,
			wxid: wxid,
			content: ''
		}
	}
	data_opt = JSON.stringify(data_opt);

	initAjax(data_opt);
}

// 将当前联系人添加至最近联系人列表--回调
function addtoRelatedListCallback(res) {
	if (res.code == 100) {
		//显示聊天窗口和右侧用户信息
		D("middle_chat_area").style.display = "block";
		D("right_baseinfo_area").style.display = "block";

		//编辑器聚焦
		CHAT_EDITOR.focus();
		// CHAT_EDITOR.html('&nbsp;');
	}
}

// 查找用户--失去焦点隐藏结果框
function hideSchRes() {
	setTimeout(function () {
		D('sch-ipt').value = '';
		D('sch-res').style.display = 'none';
		D('no-res').style.display = 'none';
	}, 300)
}

// 显示增加快捷回复弹窗
function showAddQuick() {


	// CHAT_EDITOR.insertHtml('我点击了右键')
	var data_opt = {
		type: "QuickReply/ShowAdd",
		data: {
			robot_name: robot_name,
		}
	}
	data_opt = JSON.stringify(data_opt);

	initAjax(data_opt);
	//D("add-new-quick-box").style.display = "block";
}

// 关闭增加快捷回复弹窗
function cancelAddQuick() {
	// alert(123)
	D("add-new-quick-box").style.display = "none";


}
// 关闭增加快捷回复弹窗
// function handleIncrease() {
// 	setTimeout(function () {
// 		// 获取快捷回复列表
// 		getPersonalQuickReply();
// 	}, 100)
// 	D("add-new-quick-box").style.display = "none";
// 	// CHAT_EDITOR.insertHtml('我点击了右键')

// }
// setTimeout(function handleIncrease() {
// 	D("add-new-quick-box").style.display = "none";
// 	CHAT_EDITOR.insertHtml('我点击了右键')

// 	// 		// 获取快捷回复列表
// 	getPersonalQuickReply();
// }, 100)


// 显示修改快捷回复弹窗
function handleModify() {
	D("add-new-quick-box1").style.display = "block";

}

// 关闭修改快捷回复弹窗
function cancelAddQuick1() {
	D("add-new-quick-box1").style.display = "none";
}
// 关闭修改快捷回复弹窗
// function handleModify1() {
// 	// setTimeout(function () {
// 	// 	// 获取快捷回复列表
// 	// 	getPersonalQuickReply();
// 	// }, 100)
// 	D("add-new-quick-box1").style.display = "none";
// }


// 显示删除快捷回复弹窗
function handleDelete() {
	D("add-new-quick-box2").style.display = "block";
}

// 关闭删除快捷回复弹窗
// function cancelAddQuick2() {
// 	D("add-new-quick-box2").style.display = "none";
// }

// // 删除快捷回复方式
// function handleDelete() {
// 	alert(123)
// }




// 历史消息记录
function handleClickViewRecord() {
	tool.storage.set("default_avatar", default_avatar);
	tool.storage.set("contact_item_avatar", contact_item_avatar);
	var url = "./html/history.html?robot_name=" + robot_name + "&wx_id=" + contact_item_wxid + "&usernick=" +
		contact_item_usernick;
	window.open(url);
}




// 发送消息
function handleClickSendMsg() {
	//验证
	var msg_cont = CHAT_EDITOR.text();
	if (msg_cont.trim() == '') {
		modal.tips("不能发送空白消息");
		return;
	}

	//表情检测
	if (window.emojiObj.length !== 0) {
		for (var i in emojiObj) {
			var idx = emojiObj[i].num;
			var path = emojiObj[i].path;
			var keyEmoji = emoticons[idx];
			var str = '<img src="' + path + idx + '.gif" />';
			msg_cont = msg_cont.replace(str, '[' + keyEmoji + ']');
		}
		window.emojiObj = [];
	}

	//单次发送
	if (once_send) {
		return;
	}
	once_send = true;

	//请求
	load_first = true;
	var guid = genarateUid();
	guid = guid + "_" + contact_item_wxid + "_" + new Date().getTime();
	jude_guid = guid;
	var data_opt = {
		type: "Message/Send",
		data: {
			robot_name: robot_name,
			wxid: contact_item_wxid,
			to_wxid: contact_item_wxid,
			from_wxid: 'localhost',
			content: msg_cont,
			guid: guid
		}
	}
	data_opt = JSON.stringify(data_opt);
	initAjax(data_opt);

	//清空输入框
	// CHAT_EDITOR.html('&nbsp;');
	CHAT_EDITOR.html('');
	// CHAT_EDITOR.html(' ');
	//编辑器聚焦
	CHAT_EDITOR.focus();
	// CHAT_EDITOR.html('&nbsp;');

	setTimeout(function () {
		CHAT_EDITOR.focus();
	}, 500);



	//聊天置顶
	var idx = '';
	for (var i = 0; i < recent_contacts_list.length; i++) {
		var item_wxid = recent_contacts_list[i].wxid;
		if (item_wxid == contact_item_wxid) {
			idx = i;
		}
	}
	recent_contacts_list[idx].unread = 0;
	var new_msg_item = recent_contacts_list.splice(idx, 1);
	recent_contacts_list.splice(0, 0, new_msg_item[0]);
	renderContactslist(recent_contacts_list);
}

// 发送消息回调
var jude_guid = '';
var load_first = true;
// alert(成功发送)

function handleClickSendMsgCallback(data) {
	//解除单次发送
	once_send = false;

	var content_id = "content" + data.wxid;
	var time_id = "time" + data.wxid;
	if (load_first) {
		var newMsg = document.createElement("div");
		newMsg.className = "chat-item clearfix self";

		var html = '';
		// html += '<div class="chat-time">' + data.timestramp + '</div>'
		html += '<div class="avatar">';
		html += '<img src="' + default_avatar + '" data-wxid="' + data.wxid + '" onclick="viewUserDetail(this,0)">';
		html += '</div>';
		html += '<div class="chat-cont">';
		html += '<div class="cont">' + formatChat(data.source.content) + '</div>';
		html += '<div class="triangle"></div>';
		html += '<div class="msg-unsend">';
		if (data.status == 1) {
			//1:已推送给机器人，等待机器人通知
			html += '<img src="./assets/images/loading.gif" id="' + jude_guid + '">';
		} else if (data.status == -1 || data.status == -2) {
			//-1:无法推送给服务器或者机器人不在线 -2：发送失败
			html += '<img src="./assets/images/fail.svg" id="' + jude_guid + '" class="failed">';
		} else if (data.status == 9) {
			//9：成功发送用户
			html += '<img src="" id="' + jude_guid + '" style="display:none;">';
		}
		html += '</div>';
		html += '</div>';

		newMsg.innerHTML = html;
		D("chat-list").appendChild(newMsg);

		var contact_item_content = D(content_id);
		var contact_item_time = D(time_id);

		//更新显示内容
		contact_item_content.innerHTML = data.source.content;

		//更新消息时间
		contact_item_time.innerHTML = tool.formatDate('hh:ii', data.source.t);

		//聊天记录置底
		scrollToBottom();

		//标记消息为已读
		setTimeout(function () {
			markMsgRead(data.wxid);
		}, 100)
	} else {
		if (data.status == 1) {
			//1:已推送给机器人，等待机器人通知
			D(jude_guid).classList.remove("failed");
			D(jude_guid).src = "./assets/images/loading.gif";
		} else if (data.status == -1 || data.status == -2) {
			//-1:无法推送给服务器或者机器人不在线 -2：发送失败
			D(jude_guid).classList.add("failed");
			D(jude_guid).src = "./assets/images/fail.svg";
		} else if (data.status == 9) {
			//9：成功发送用户
			D(jude_guid).style.display = "none";
		}
	}
	load_first = false;
}

// 生成唯一标志符
function genarateUid() {
	var s = [];
	var hexDigits = "0123456789abcdef";
	for (var i = 0; i < 36; i++) {
		s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
	}
	s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
	s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
	s[8] = s[13] = s[18] = s[23] = "-";

	var uuid = s.join("");
	return uuid;
}

// 选择发送模式--显示
function handleShowChooseModel() {
	document.getElementById("choose-model").style.display = 'block';
}

// 选择发送模式--选择
function handleSelectedModel(type, e) {
	send_type = type;
	var $tar = $(e);
	$tar.addClass("active");
	$tar.siblings().removeClass("active");
	document.getElementById("choose-model").style.display = 'none';

	//编辑器聚焦
	CHAT_EDITOR.focus();
	// CHAT_EDITOR.paste()
	// CHAT_EDITOR.html('&nbsp;');

	if (send_type == 'enter') {
		shortCut.feedback('ctrlEnter', function () {
			CHAT_EDITOR.insertHtml('<br />')
		});
		shortCut.feedback('enter', function () {
			handleClickSendMsg();
		})
	} else if (send_type == 'ctrlEnter') {
		shortCut.feedback('ctrlEnter', function () {
			handleClickSendMsg();
		});
		shortCut.feedback('enter', function () {
			CHAT_EDITOR.insertHtml('<br />')
		})
	}
}

// 点击图片查看大图
function viewLargePic(e) {
	var uuid = e.getAttribute("data-uuid");
	var viewer = new Viewer(document.getElementById(uuid), {
		inline: false,
		viewed() {
			viewer.zoomTo(1);
		},
	});
}

//定位到未读消息
var click_time = 0;

function findUnread() {
	//查找未读消息，保存至数组
	var unread_list = [];
	for (var i in recent_contacts_list) {
		if (recent_contacts_list[i].unread != 0) {
			unread_list.push(i);
		}
	}

	//滚动框DOM
	var scrollDom = document.getElementById("dropView");

	//设置scrollTop的值
	if (unread_list.length !== 0) {
		//未读消息在消息列表的索引值
		var idx = unread_list[click_time];
		scrollDom.scrollTop = idx * 70;
		//计算点击次数
		click_time += 1;
		if (click_time == unread_list.length) {
			click_time = 0;
		}
	}
}


// 全局粘贴
function handlePasteCallback() {
	CHAT_EDITOR.paste()
}